//
// Created by PC on 2024/3/19.
// GESP 四级 2024.3第一题
// https://oj.youdao.com/problem/19385?from=problems
// 通过
/*
试题名称：相似字符串
3.1.1 问题描述
对于两个字符串 A和 B，如果 A可以通过删除一个字符，或插入一个字符，或修改一个字符变成B ，那么我们说A
和 B是相似的。
比如 apple 可以通过插入一个字符变成 applee ，可以通过删除一个字符变成 appe ，也可以通过修改一个字符
变成 bpple ，因此 apple 和 applee 、 appe 、 bpple 都是相似的。但 applee 并不能通过任意一个操作变成
bpple ，因此它们并不相似。
特别地，完全相同的两个字符串也是相似的。
给定 T组 A,B，请你分别判断他们是否相似。
3.1.2 输入描述
第一行一个正整数 。
接下来 T行，每行两个用空格隔开的字符串 A和B 。
保证T<=100 ，AB 的长度不超过 50。保证 A和 B只包含小写字母。
3.1.3 输出描述
输出 T行，对于每组AB ，如果它们相似，则输出 similar ，否则输出 not similar 。
3.1.5 样例输入
5
apple applee
apple appe
apple bpple
applee bpple
apple apple
3.1.6 样例输出
similar
similar
similar
not similar
similar
 *
 * */


#include <iostream>
#include <cmath>

using namespace std;

bool is_similar(string a, string b)
{
//    if (a == b)
//        return true;
    if (a.size()<b.size())
        swap(a,b);
    // 对于长度差大于一的 false
    int gap = a.size() - b.size();
    if (gap > 1)
        return false;
    int count = 0;
    // 对于长度一样 有一个字母不一样的 true
    // 或者长度不一样 最后一位多一个或者少一个的 true
    for (int i=0;i<a.size();++i)
    {
        if(a[i]!=b[i])
            ++count;
    }
    if(count<=1) return true;
    // 对于B插入一个或删除就一样的
    count = 0;
    for(int i=0,j=0;i<a.size();++i)
    {
        if(a[i]==b[j])
            ++j;
        else
            ++count;
    }
    if(count<=1) return true;
    return false;
}

int main()
{
//    cout << is_similar("apple", "app");
    int t;
    cin>>t;
//    string A,B; // 写在这里不行,why?
    for (int i = 1; i <=t ; ++i)
    {
        string A,B; // 写在这里就通过了 why?
        cin>>A>>B;
        if(is_similar(A,B))
            cout<<"similar"<<endl;
        else
            cout<<"not similar"<<endl;
    }
    return 0;
}